package pos.data;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedList;
import java.util.List;

import com.mysql.jdbc.PreparedStatement;

import pos.domain.Propietario;

public class JDBCPropietarioDAO implements IPropietarioDAO{

	@Override
	public void delete(Connection conn, String PID) {
		String sql="DELETE FROM Usuario WHERE (OID=?)";
		PreparedStatement stmt=null;
		
		try{
			stmt=(PreparedStatement) conn.prepareStatement(sql);
			stmt.setString(1, PID);
			stmt.executeUpdate();
		}catch(SQLException e){
			System.out.print("se ha producido un error en la base de datos");
		}finally {
            try {
                if (stmt != null)
                    stmt.close();
            } catch (SQLException e) {
            }	
		}
		
	}

	@Override
	public void insert(Connection conn, String POID, Propietario p) {
		PreparedStatement stmt = null;
		String sql="INSERT INTO Usuario (OID,nombre,apellidos,telefono,direccion,codigo_postal,provincia,pais,fax,telefono2,dni,letra,fecha_nacimiento,email,contrasena)VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
		try{
			stmt=(PreparedStatement) conn.prepareStatement(sql);
			
			stmt.setString(1,POID);
			stmt.setString(2,p.getNombre());
			stmt.setString(3,p.getApellidos());
			stmt.setInt(4,p.getTelefono());
			stmt.setString(5,p.getDireccion());
			stmt.setInt(6,p.getCodigo_postal());
			stmt.setString(7,p.getProvincia());
			stmt.setString(8,p.getPais());
			stmt.setInt(9,p.getFax());
			stmt.setInt(10,p.getTelefono2());
			stmt.setInt(11,p.getDni());
			stmt.setString(12,p.getLetradni());
			stmt.setString(13,p.getFecha_nacimiento());
			stmt.setString(14,p.getEmail());
			stmt.setString(15,p.getContrasena());
						
			stmt.executeUpdate();
			
		}catch(SQLException e){
			System.out.print("se ha producido un error en la conexion a la base de datos");
		}finally{
			try {
                if (stmt != null) {
                    stmt.close();
                }
            } catch (SQLException e) {
            }
		}
	}

	@Override
	public Propietario select(Connection conn, String OOID) {
		/*PreparedStatement stmt=null;
		ResultSet result=null;
		Propietario p=null;
		String sql="SELECT * FROM Usuario WHERE (OID = ?)";
		try{
			stmt = (PreparedStatement) conn.prepareStatement(sql);
            stmt.setString(1, OOID);
            result = stmt.executeQuery();
            result.next();
            
            
            
            p=new Propietario();
            p.setApellidos(result.getString("apellidos"));
            p.setCodigo_postal(result.getInt("codigo_postal"));
            p.setContrasena(result.getString("contrasena"));
            p.setDireccion(result.getString("direccion"));
            p.setDni(result.getInt("dni"));
            p.setEmail(result.getString("email"));
            p.setFax(result.getInt("fax"));
            p.setFecha_nacimiento(result.getString("fecha_nacimiento"));
            p.setLetradni(result.getString("letra"));
            p.setNombre(result.getString("nombre"));
            p.setOID(result.getString("OID"));
            p.setPais(result.getString("pais"));
            p.setProvincia(result.getString("provincia"));
            p.setTelefono(result.getInt("telefono"));
            p.setTelefono2(result.getInt("telefono2"));
            
		}catch (SQLException e){
			System.out.print("se ha producido un error al conectar con la base de datos");
		}finally{
			try {
                if (result != null) {
                    result.close();
                }
                if (stmt != null) {
                    stmt.close();
                }
            } catch (SQLException e) {
            }
		}
		*/
		return null;
	}

	@Override
	public List<Propietario> selectAllPropietario() {
		Connection conn=ConnectionManager.getInstance().checkOut();
		PreparedStatement stmt=null;
		List<Propietario> searchResults=new LinkedList<Propietario>();
		ResultSet result=null;
		
		
		
		try{
			String sql="SELECT * FROM Usuario";
			stmt = (PreparedStatement)conn.prepareStatement(sql); 
            stmt.executeQuery();
            result = stmt.executeQuery();
			while(result.next()){
				Propietario temp=new Propietario();
				temp.setApellidos(result.getString("Apellidos"));
				temp.setCodigo_postal(result.getInt("Codigo_postal"));
				temp.setContrasena(result.getString("Contraseña"));
				temp.setDireccion(result.getString("Direccion"));
				temp.setDni(result.getInt("Dni"));
				temp.setEmail(result.getString("Email"));
				temp.setFax(result.getInt("Fax"));
				temp.setFecha_nacimiento(result.getString("fecha_nacimiento"));
				temp.setLetradni(result.getString("Letra"));
				temp.setNombre(result.getString("Nombre"));
				temp.setOID(result.getString("OID"));
				temp.setPais(result.getString("Pais"));
				temp.setProvincia(result.getString("Provincia"));
				temp.setTelefono(result.getInt("Telefono"));
				temp.setTelefono2(result.getInt("Telefono2"));
				
				
				searchResults.add(temp);
			}
		}catch(SQLException e){
			System.out.print("Se ha producido un error en la base de datos");
		}finally{
			ConnectionManager.getInstance().checkIn(conn);
			try{
				if(result!=null)
					result.close();
				if(stmt!=null){
					stmt.close();
				}
			}catch(SQLException e){
			}
			
		}
		return searchResults;
	}



}
